package com.dwjm.exam.stu_list;

import java.util.List;

/**
 * 学生信息数据访问接口，定义了与学生信息相关的数据访问操作规范。
 * 该接口用于规范对学生信息的增删改查等操作，具体实现由实现类完成。
 */
public interface InquireDao {
    /**
     * 向数据存储（如数据库）中添加学生信息。
     * 由实现类负责具体的添加逻辑，如与数据库交互执行插入语句。
     * @param student 要添加的学生对象，包含学生的各项信息
     * @return 执行添加操作后影响的行数，用于判断操作是否成功，通常成功返回大于 0 的数，失败返回 0
     */
    int addStudent(Student student);

    /**
     * 根据给定的学生学号，从数据存储中删除对应的学生信息。
     * 实现类需根据该学号构建删除逻辑，如在数据库中执行删除语句。
     * @param studentId 要删除的学生的学号，作为删除操作的唯一标识
     * @return 执行删除操作后影响的行数，用于判断操作是否成功，成功返回大于 0 的数，失败返回 0
     */
    int deleteStudent(String studentId);

    /**
     * 更新数据存储中已有的学生信息。
     * 实现类需根据学生对象中的新信息，构建更新逻辑，如在数据库中执行更新语句。
     * @param student 包含更新后信息的学生对象，根据该对象的属性更新数据存储中的对应记录
     * @return 执行更新操作后影响的行数，用于判断操作是否成功，成功返回大于 0 的数，失败返回 0
     */
    int updateStudent(Student student);

    /**
     * 根据给定的学生学号，从数据存储中查询对应的学生信息。
     * 实现类需根据学号构建查询逻辑，如在数据库中执行查询语句，并将查询结果封装为学生对象返回。
     * @param studentId 要查询的学生的学号，作为查询操作的唯一标识
     * @return 对应的学生对象，如果未找到则返回 null
     */
    Student getStudentById(String studentId);

    /**
     * 从数据存储中获取所有学生的信息列表。
     * 实现类需构建查询所有学生信息的逻辑，如在数据库中执行全表查询语句，并将结果封装为学生对象列表返回。
     * @return 包含所有学生对象的列表，如果没有学生信息则返回空列表
     */
    List<Student> getAllStudents();

    /**
     * 根据给定的查询条件（如姓名、学院、专业等），从数据存储中查询符合条件的学生信息列表。
     * 实现类需根据查询条件构建模糊查询或精确查询逻辑，如在数据库中执行带条件的查询语句，并将结果封装为学生对象列表返回。
     * @param condition 查询条件，用于筛选符合要求的学生信息
     * @return 包含符合条件的学生对象的列表，如果没有符合条件的学生则返回空列表
     */
    List<Student> queryStudents(String condition);
}